// Zone.h: interface for the Zone class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ZONE_H__54C29298_A35A_414A_AA05_EFEE421BC54F__INCLUDED_)
#define AFX_ZONE_H__54C29298_A35A_414A_AA05_EFEE421BC54F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Tree.h"

using namespace PDMS::PDMSFrame;

namespace PDMS
{
	namespace PDMSDomain
	{
		class DllExport Zone : public PDMSFrame::Tree 
		{
			UE_PDMSCLASS_DEFINE( Zone );

		public:

			const StdString& GetFunction() const{
				AssertReadEnable();
				return m_strFunction;
			}

			const StdString& GetPurpose() const{
				AssertReadEnable();
				return m_strPurpose;
			}

			INT GetNumber() const{
				AssertReadEnable();
				return m_iNumber;
			}

			INT GetArea() const{
				AssertReadEnable();
				return m_iArea;
			}

			const StdString& GetModule() const{
				AssertReadEnable();
				return m_strModule;
			}

			const StdString& GetPspec() const{
				AssertReadEnable();
				return m_strPspec;
			}

			const StdString& GetIspec() const{
				AssertReadEnable();
				return m_strIspec;
			}

			const StdString& GetTspec() const{
				AssertReadEnable();
				return m_strTspec;
			}

			INT GetDUnion() const{
				AssertReadEnable();
				return m_iDUnion;
			}

			const StdString& GetRlstored() const{
				AssertReadEnable();
				return m_strRlstored;
			}

		public:
			BOOL IsLegalParent( Tree* pParent );
			Persistable* Clone();
			Zone();
			virtual ~Zone();

			BOOL SetFunction( const StdString &strFuncuion ){
				AssertWriteEnable();
				m_strFunction = strFuncuion;
				return TRUE;
			}

			BOOL SetPurpose( const StdString &strPurpose ){
				AssertWriteEnable();
				m_strPurpose = strPurpose;
				return TRUE;
			}

			BOOL SetNumber( const INT iNumber ){
				AssertWriteEnable();
				m_iNumber = iNumber;
				return TRUE;
			}

			BOOL SetArea( const INT iArea ){
				AssertWriteEnable();
				m_iArea = iArea;
				return TRUE;
			}

			BOOL SetModule( const StdString &strModule ){
				AssertWriteEnable();
				m_strModule = strModule;
				return TRUE;
			}

			BOOL SetPspec( const StdString &strPspec ){
				AssertWriteEnable();
				m_strPspec = strPspec;
				return TRUE;
			}

			BOOL SetIspec( const StdString &strIspec ){
				AssertWriteEnable();
				m_strIspec = strIspec;
				return TRUE;
			}

			BOOL SetTspec( const StdString &strTspec ){
				AssertWriteEnable();
				m_strTspec = strTspec;
				return TRUE;
			}

			BOOL SetDUnion( const INT iDUnion ){
				AssertWriteEnable();
				m_iDUnion = iDUnion;
				return TRUE;
			}

			BOOL SetRlstored( const StdString &strRlstored ){
				AssertWriteEnable();
				m_strRlstored = strRlstored;
				return TRUE;
			}

		private:
			// ??? m_?Position;
			// ??? m_?Orient;
			StdString m_strFunction;
			StdString m_strPurpose;
			INT       m_iNumber;
			INT       m_iArea;
			StdString m_strModule;
			StdString m_strPspec;
			StdString m_strIspec;
			StdString m_strTspec;
			INT       m_iDUnion;
			StdString m_strRlstored;
		};
	}
}


#endif // !defined(AFX_ZONE_H__54C29298_A35A_414A_AA05_EFEE421BC54F__INCLUDED_)
